14. 보안의 기본과 개념1
73. 보안의 기본과 개념
정보 보안의 CIA 밸런스
CIA 원칙: 정보 보안을 구성하는 세 가지 핵심 요소
정보 보안의 3요소 (CIA Triad):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[CIA 원칙]
│
┌────┼────┐
│ │ │
↓ ↓ ↓
[C] [I] [A]
Confidentiality (기밀성)
└─ 적법한 사람만 정보 이용
└─ 무단 접근 방지
Integrity (무결성)
└─ 정보의 정확성 유지
└─ 변경/파괴 방지
Availability (가용성)
└─ 필요할 때 정보 이용 가능
└─ 서비스 지속성 보장
CIA 요소 간 상충 관계:
CIA 밸런스의 트레이드오프:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[기밀성 ↑] [무결성 ↑]
\ /
\ /
\ /
\ /
\ /
\ /
↓
[가용성 ↓]
보안 강화:
• 엄격한 접근 제어
• 다단계 인증
• 암호화 강화
↓
• 이용 절차 복잡
• 응답 시간 증가
• 사용성 저하
균형이 핵심:
→ 조직의 특성과 요구사항에 맞는 적절한 균형점 찾기
조직별 CIA 우선순위 예시:
| 조직 유형 | C (기밀성) | I (무결성) | A (가용성) | 특징 |
|---|---|---|---|---|
| 군사/국방 | ★★★ | ★★★ | ★★ | 기밀 정보 누출 방지 최우선 |
| 금융 | ★★★ | ★★★ | ★★★ | 세 요소 모두 매우 중요 |
| 의료 | ★★★ | ★★★ | ★★ | 환자 정보 보호와 정확성 |
| SNS | ★★ | ★★ | ★★★ | 서비스 지속성이 핵심 |
| 언론 | ★★ | ★★★ | ★★★ | 정보 정확성과 서비스 |
정보 보안을 검토하는 절차
3단계 보안 검토 프로세스:
정보 보안 검토 프로세스:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1단계: 자산 식별
↓
[보호 대상 자산 파악]
• 무엇을 지켜야 하는가?
• 어떤 가치가 있는가?
↓
2단계: 위험 분석
↓
[위험과 위협 나열]
• 어떤 위협이 존재하는가?
• 발생 가능성과 영향도는?
↓
3단계: 대응 방안 수립
↓
[대책 마련]
• 기술적 대책
• 관리적 대책
• 물리적 대책
1단계: 보호 대상 자산 식별
개인이나 조직에서 지켜야 할 가치가 있는 것이 무엇인지 구체적으로 결정해야 함
보호해야 하는 자산의 예시:
보호 대상 자산:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[무형 자산]
├─ 신용 (Reputation)
├─ 브랜드 (Brand)
├─ 특허 (Patent)
└─ 저작권 (Copyright)
[정보 자산]
├─ 고객 정보 (Customer Data)
├─ 경영 정보 (Business Intelligence)
├─ 영업 비밀 (Trade Secrets)
└─ 개인정보 (Personal Information)
[물리적 자산]
├─ 자금 (Funds)
├─ 시설 (Facilities)
└─ 장비 (Equipment)
2단계: 위험과 위협 파악
자산이 직면한 위험과 위협을 체계적으로 나열하고 분석함
위험과 위협의 예시:
보안 위협 분류:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[환경적 위협]
├─ 자연재해 (지진, 화재, 홍수)
├─ 사고 (정전, 장비 고장)
└─ 테러 (물리적 공격)
[인적 위협]
├─ 정보 누설 (Information Leak)
├─ 내부 범행 (Insider Threat)
└─ 신용 훼손 (Reputation Damage)
[기술적 위협]
├─ 사이버 공격 (Cyber Attack)
├─ 멀웨어 (Malware)
├─ 랜섬웨어 (Ransomware)
├─ 피싱 (Phishing)
└─ 표적형 공격 (APT)
[법적/규제 위협]
└─ 법 개정 (Regulation Change)
3단계: 대응 방안 검토
나열한 위협에 대해 구체적인 대응 방법을 수립함
보안 대책 유형:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[기술적 대책]
├─ 방화벽 (Firewall)
├─ IDS/IPS (침입 탐지/차단)
├─ 암호화 (Encryption)
├─ 접근 제어 (Access Control)
├─ 백업 시스템 (Backup)
└─ 네트워크 강화 (Network Security)
[관리적 대책]
├─ 보안 정책 수립
├─ 사용자 교육
├─ 권한 관리
├─ 감사 및 모니터링
└─ 사고 대응 절차
[물리적 대책]
├─ 출입 통제
├─ CCTV 설치
├─ 잠금 장치
└─ 백업 센터
사전 대책 vs 사후 대응:
보안 대응 시점:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[사전 대책 (Preventive)]
↓
위협 발생 방지
• 방화벽 설치
• 암호화 적용
• 접근 권한 통제
• 보안 패치
↓
[위협 발생]
↓
[사후 대응 (Reactive)]
↓
피해 최소화 및 복구
• 사고 대응 팀 가동
• 침해 범위 파악
• 시스템 격리
• 백업 복구
• 법적 대응
보안 검토 프로세스 실무 예시
전자상거래 기업의 보안 검토:
실무 예시: 온라인 쇼핑몰
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 자산 식별:
├─ 고객 개인정보 (이름, 주소, 전화번호)
├─ 결제 정보 (신용카드 번호)
├─ 구매 이력
├─ 브랜드 신뢰도
└─ 웹사이트 가용성
2. 위험 분석:
├─ SQL 인젝션 공격
├─ 개인정보 유출
├─ DDoS 공격 (서비스 중단)
├─ 내부자에 의한 정보 유출
└─ 개인정보보호법 위반
3. 대응 방안:
├─ 기술적: WAF, DB 암호화, CDN
├─ 관리적: 보안 교육, 권한 분리
└─ 물리적: 서버실 출입 통제
결과:
→ CIA 밸런스 유지
→ 고객 신뢰 확보
→ 법적 리스크 최소화
74. 멀웨어/컴퓨터 바이러스
컴퓨터 바이러스와 멀웨어의 차이
용어의 변화:
용어의 진화:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[과거]
"컴퓨터 바이러스"
↓
모든 악성 코드를 통칭
↓
[현재]
"멀웨어 (Malware)"
↓
Malicious Software
악의적인 소프트웨어 전체
↓
컴퓨터 바이러스는
멀웨어의 하위 분류 중 하나
컴퓨터 바이러스의 3대 특징:
컴퓨터 바이러스의 특징:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 자기 전염 기능 (Self-replication)
└─ 스스로 복제하여 다른 파일로 전파
└─ 기존 프로그램에 기생
2. 잠복 기능 (Latency)
└─ 일정 기간 증상 없이 숨어있음
└─ 특정 조건 만족 시 활성화
3. 발병 기능 (Payload)
└─ 실제 피해를 발생시키는 동작
└─ 데이터 파괴, 정보 유출 등
특징:
→ 단독으로 존재 불가
→ 반드시 다른 프로그램에 기생
자기 전염 기능 상세:
자기 전염 메커니즘:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[감염된 프로그램.exe]
↓
[바이러스 코드가 실행]
↓
[시스템 내 다른 실행 파일 검색]
↓
[정상 파일 A.exe] → [바이러스 코드 삽입] → [감염된 A.exe]
↓
[정상 파일 B.exe] → [바이러스 코드 삽입] → [감염된 B.exe]
↓
[확산]
발병 기능 예시:
바이러스 발병 행위:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[데이터 파괴형]
├─ 파일 삭제
├─ 디스크 포맷
└─ 부팅 영역 파괴
[정보 유출형]
├─ 키로깅
├─ 화면 캡처
└─ 파일 외부 전송
[시스템 마비형]
├─ CPU 과부하
├─ 메모리 고갈
└─ 네트워크 마비
악영향을 미치는 멀웨어 종류
멀웨어 주요 유형:
멀웨어 분류 (전염 방식 기준):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[컴퓨터 바이러스 (Virus)]
├─ 자기 전염: O (기생형)
├─ 잠복 기능: O
├─ 독립 실행: X
└─ 특징: 기존 프로그램에 기생하여 전염
[웜 (Worm)]
├─ 자기 전염: O (독립형)
├─ 네트워크 전파: O
├─ 독립 실행: O
└─ 특징: 네트워크를 통해 독립적으로 확산
[트로이 목마 (Trojan Horse)]
├─ 자기 전염: X
├─ 위장: O (정상 프로그램으로 가장)
├─ 독립 실행: O
└─ 특징: 사용자를 속여 직접 실행하게 함
[스파이웨어 (Spyware)]
├─ 자기 전염: X
├─ 정보 수집: O
├─ 은밀 동작: O
└─ 특징: 사용자 활동 감시 및 정보 유출
각 유형별 상세:
1. 컴퓨터 바이러스 (Virus):
컴퓨터 바이러스 동작 방식:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[정상 프로그램]
↓
[바이러스 감염]
↓
[감염된 프로그램 실행]
↓
├─→ [정상 기능 수행]
└─→ [바이러스 코드 실행]
↓
[다른 파일로 전염]
↓
[잠복]
↓
[조건 만족 시 발병]
특징:
→ 숙주 프로그램 필요
→ 사용자가 감염 파일 실행 시 활성화
2. 웜 (Worm):
웜의 확산 메커니즘:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PC A] ←───┐
│ │
↓ │
[웜 실행] │
│ │
↓ │
[네트워크 스캔]
│ │
↓ │
[취약점 발견] │
│ │
↓ │
[PC B로 전파]──┘
│
↓
[독립적으로 확산]
대표 사례:
• 2003년 SQL Slammer
→ 인터넷을 통해 10분 만에 75,000대 감염
• 2017년 WannaCry
→ 150개국 30만대 감염
3. 트로이 목마 (Trojan Horse):
트로이 목마 침투 과정:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[정상 프로그램으로 위장]
↓
예시:
• "무료 게임.exe"
• "중요 문서.pdf.exe"
• "보안 업데이트.exe"
↓
[사용자가 직접 실행]
↓
[정상 기능처럼 동작]
↓
[백그라운드에서 악성 행위]
├─ 백도어 설치
├─ 정보 유출
└─ 추가 멀웨어 다운로드
주의:
→ 자기 전염 기능 없음
→ 사용자의 실행이 핵심
4. 스파이웨어 (Spyware):
스파이웨어 동작 흐름:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[은밀한 설치]
↓
[백그라운드 실행]
↓
[정보 수집]
├─ 키보드 입력 (Keylogging)
├─ 마우스 클릭
├─ 화면 캡처
├─ 웹 브라우징 기록
└─ 파일 접근
↓
[수집된 정보 외부 전송]
↓
[공격자 서버]
목적:
→ 개인정보 탈취
→ 금융 정보 수집
→ 기업 기밀 유출
멀웨어 기능별 분류
기능별 멀웨어 유형:
멀웨어 기능별 분류:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[다운로더 (Downloader)]
역할: 공격자 서버에서 멀웨어 본체 다운로드
특징: 초기 침투용 소형 프로그램
↓
[키로거 (Keylogger)]
역할: 키보드 입력 감시 및 기록
목표: 비밀번호, 신용카드 정보 탈취
↓
[랜섬웨어 (Ransomware)]
역할: 데이터 암호화 후 금전 요구
특징: 암호 해제 대가로 비트코인 요구
↓
[백도어 (Backdoor)]
역할: 정상 인증 우회하는 뒷문 생성
목적: 지속적인 접근 권한 확보
↓
[RAT (Remote Access Trojan)]
역할: 원격 조작 및 데이터 탈취
기능: 완전한 시스템 제어
↓
[루트킷 (Rootkit)]
역할: 침입 도구 세트
특징: 존재 자체를 숨김
↓
[익스플로잇 (Exploit)]
역할: 시스템/앱 취약점 공격
목적: 권한 획득 또는 코드 실행
각 유형 상세 설명:
다운로더 (Downloader):
다운로더 공격 시나리오:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[피싱 이메일] → [첨부파일 실행]
↓
[소형 다운로더 실행]
파일 크기: 수십 KB
↓
[C&C 서버 접속]
(Command & Control Server)
↓
[실제 멀웨어 다운로드]
파일 크기: 수 MB
↓
[시스템 감염]
장점 (공격자 입장):
→ 초기 페이로드 작음
→ 탐지 회피 용이
→ 멀웨어 업데이트 가능
키로거 (Keylogger):
키로거 동작 원리:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[사용자 키보드 입력]
↓
[후킹(Hook) 메커니즘]
↓
[입력 내용 기록]
├─ 타임스탬프
├─ 실행 중인 프로그램
└─ 입력 텍스트
↓
[로그 파일 생성]
↓
[정기적으로 외부 전송]
기록 예시:
2025-12-18 14:30:15 | chrome.exe | bank
2025-12-18 14:30:20 | chrome.exe | password123
2025-12-18 14:30:35 | chrome.exe | 1234-5678-9012-3456
랜섬웨어 (Ransomware):
랜섬웨어 공격 단계:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1단계: 침투
↓
[피싱 이메일 / 취약점 공격]
↓
2단계: 암호화
↓
[시스템 내 파일 스캔]
├─ 문서 (.doc, .pdf)
├─ 이미지 (.jpg, .png)
├─ 데이터베이스 (.db)
└─ 백업 파일
↓
[강력한 암호화 수행]
(AES-256, RSA-2048 등)
↓
3단계: 협박
↓
[화면에 협박 메시지 표시]
"당신의 파일이 암호화되었습니다.
비트코인 0.5 BTC를 보내면 복호화 키 제공.
72시간 내 미지불 시 파일 영구 삭제."
↓
4단계: 금전 요구
↓
[비트코인 주소 제공]
[결제 확인 페이지]
대표 사례:
• WannaCry (2017)
• Petya/NotPetya (2017)
• REvil (2021)
백도어 (Backdoor):
백도어 설치 및 활용:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[초기 침투]
↓
[백도어 설치]
├─ 새 관리자 계정 생성
├─ 원격 접속 포트 개방
└─ 방화벽 규칙 수정
↓
[정상 인증 우회]
↓
[공격자가 언제든지 접속 가능]
↓
[지속적인 악성 행위]
├─ 데이터 탈취
├─ 추가 멀웨어 설치
└─ 시스템 제어
특징:
→ 존재 은폐
→ 영구적 접근 권한
→ APT 공격에 활용
RAT (Remote Access Trojan):
RAT 기능:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[감염된 시스템]
↓
[RAT 설치]
↓
[C&C 서버 연결]
↓
[공격자 제어]
↓
제어 가능 기능:
├─ 파일 시스템 접근
├─ 화면 원격 조작
├─ 웹캠 활성화
├─ 마이크 녹음
├─ 키로깅
├─ 프로세스 제어
└─ 네트워크 스니핑
대표 RAT:
• DarkComet
• njRAT
• Poison Ivy
루트킷 (Rootkit):
루트킷 특징:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[루트킷 = 침입 도구 세트]
↓
포함 구성 요소:
├─ 다운로더
├─ 키로거
├─ 백도어
├─ RAT
└─ 은폐 도구
↓
은폐 메커니즘:
├─ 프로세스 목록에서 숨김
├─ 파일 시스템에서 숨김
├─ 레지스트리에서 숨김
├─ 네트워크 연결 숨김
└─ 커널 레벨 후킹
↓
탐지 어려움:
→ OS 깊은 곳에 설치
→ 관리자 도구도 속임
→ 전문 도구 필요
익스플로잇 (Exploit):
익스플로잇 공격 흐름:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[취약점 발견]
↓
취약점 유형:
├─ 버퍼 오버플로우
├─ SQL 인젝션
├─ 제로데이 취약점
└─ 권한 상승 취약점
↓
[익스플로잇 코드 작성]
↓
[취약점 공격 실행]
↓
공격 결과:
├─ 임의 코드 실행
├─ 권한 획득
├─ 인증 우회
└─ 서비스 거부
↓
[추가 멀웨어 설치]
예시:
• EternalBlue (WannaCry 사용)
• Shellshock (Bash 취약점)
• Heartbleed (OpenSSL 취약점)
75. 암호화 기술
암호화의 기본 개념
암호화 정의:
암호화 (Encryption):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[평문 (Plaintext)]
"Hello World"
↓
[암호화 알고리즘 + 키]
↓
[암호문 (Ciphertext)]
"5d41402abc4b2a76b9719d911017c592"
↓
[복호화 알고리즘 + 키]
↓
[평문 (Plaintext)]
"Hello World"
목적:
→ 데이터를 해독 불가능한 상태로 변환
→ 권한 없는 자의 접근 방지
암호화 구성 요소:
암호화 시스템 구성 요소:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 알고리즘 (Algorithm)
└─ 암호화 처리 절차 및 계산 방법
└─ 공개되어도 안전해야 함
2. 키 (Key)
└─ 알고리즘 계산에 사용하는 특정 값
└─ 비밀로 유지되어야 함
3. 평문 (Plaintext)
└─ 암호화 전 원본 데이터
4. 암호문 (Ciphertext)
└─ 암호화 후 변환된 데이터
핵심 원칙:
→ 알고리즘이 알려져도 키 없이는 복호화 불가
→ 암호의 안전성은 키로 유지됨
암호화의 안전성:
Kerckhoffs의 원칙:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
"암호 시스템의 안전성은
알고리즘이 아닌 키의 비밀성에 의존해야 한다"
[알고리즘 공개]
↓
[보안 전문가들이 검증]
↓
[취약점 발견 및 개선]
↓
[안전한 알고리즘 확립]
↓
[오직 키만 비밀로 유지]
↓
[높은 보안성 확보]
나쁜 예: "내가 만든 비밀 알고리즘"
좋은 예: "검증된 AES 알고리즘 + 강력한 키"
해시 함수를 사용한 암호화
해시 함수 특징:
해시 함수 (Hash Function):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[입력 데이터]
"password123"
↓
[해시 함수]
(일방향 함수)
↓
[해시값 (고정 길이)]
"482c811da5d5b4bc6d497ffa98491e38"
↓
[복호화 불가능]
특징:
├─ 일방향성: 역산 불가
├─ 결정성: 같은 입력 → 같은 출력
├─ 고정 길이: 입력 크기 무관
├─ 눈사태 효과: 입력 1비트 변경 → 출력 완전히 변경
└─ 충돌 저항성: 같은 해시값 생성 어려움
해시 함수 vs 암호화:
| 구분 | 해시 함수 | 암호화 |
|---|---|---|
| 키 사용 | 없음 (또는 선택적) | 필수 |
| 복호화 | 불가능 | 가능 |
| 출력 길이 | 고정 | 가변 |
| 목적 | 무결성 검증, 비밀번호 저장 | 데이터 보호 |
| 예시 | SHA-256, MD5 | AES, RSA |
해시 함수 활용 예시:
1. 비밀번호 저장:
비밀번호 저장 방식:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[사용자 회원가입]
↓
입력: "mypassword123"
↓
[서버: 해시 함수 적용]
해시: SHA-256("mypassword123")
결과: "8d969eef6ecad3c29a3a629280e686cf..."
↓
[DB 저장]
username: john
password: "8d969eef6ecad3c29a3a629280e686cf..."
↓
[사용자 로그인]
↓
입력: "mypassword123"
↓
[서버: 동일 해시 함수 적용]
해시: "8d969eef6ecad3c29a3a629280e686cf..."
↓
[DB 저장값과 비교]
↓
일치 → 로그인 성공
장점:
→ DB 유출되어도 원본 비밀번호 노출 안 됨
→ 관리자도 사용자 비밀번호 알 수 없음
2. 데이터 무결성 검증:
파일 무결성 검증:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[파일 다운로드 전]
↓
[서버에서 원본 파일 해시 계산]
file.zip → SHA-256 → "abc123def456..."
↓
[웹사이트에 해시값 게시]
↓
[사용자가 파일 다운로드]
↓
[다운로드한 파일 해시 계산]
downloaded.zip → SHA-256 → "abc123def456..."
↓
[해시값 비교]
↓
일치: 파일 무결, 변조 없음
불일치: 파일 손상 또는 변조됨
사용 사례:
• 소프트웨어 배포
• 블록체인
• Git 버전 관리
해시 함수에 솔트(Salt) 사용:
솔트를 이용한 보안 강화:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
문제: 동일 비밀번호 → 동일 해시값
사용자 A: "password123" → "abc123..."
사용자 B: "password123" → "abc123..."
↓
레인보우 테이블 공격에 취약
해결: 솔트(Salt) 추가
[회원가입]
↓
비밀번호: "password123"
↓
[랜덤 솔트 생성]
솔트: "x8Ks9mP2"
↓
[솔트 + 비밀번호 결합하여 해시]
해시: SHA-256("x8Ks9mP2" + "password123")
결과: "7f3d9c81ab4e2..."
↓
[DB 저장]
username: john
salt: "x8Ks9mP2"
password: "7f3d9c81ab4e2..."
결과:
→ 같은 비밀번호도 다른 해시값
→ 레인보우 테이블 공격 방어
주요 암호 알고리즘의 종류
암호화 방식별 알고리즘:
주요 암호 알고리즘:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[공통키 암호화 방식]
├─ AES (Advanced Encryption Standard)
│ └─ VPN, SSL/TLS, 파일 암호화
│
├─ RC4 (Rivest Cipher 4)
│ └─ WPA2, SSL (레거시)
│ └─ 현재는 취약점으로 사용 중단
│
└─ 3DES (Triple DES)
└─ 레거시 시스템
└─ AES로 대체 권장
[공개키 암호화 방식]
├─ RSA (Rivest-Shamir-Adleman)
│ └─ HTTPS, 전자서명
│ └─ 키 교환, 디지털 인증서
│
├─ DSA (Digital Signature Algorithm)
│ └─ 미국 정부 전자서명 표준
│ └─ 암호화 불가, 서명만 가능
│
├─ ECDSA (Elliptic Curve DSA)
│ └─ 타원곡선 암호화
│ └─ 블록체인 (Bitcoin, Ethereum)
│ └─ 짧은 키로 높은 보안
│
└─ ECC (Elliptic Curve Cryptography)
└─ 모바일, IoT 기기
└─ 효율적인 연산
[해시 함수]
├─ SHA-256 (Secure Hash Algorithm)
│ └─ 블록체인, 인증서
│
├─ SHA-3
│ └─ 최신 표준
│
└─ MD5 (Message Digest 5)
└─ 취약점 발견, 사용 중단
└─ 체크섬 용도로만 제한적 사용
알고리즘별 상세 설명:
AES (Advanced Encryption Standard):
AES 특징:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
채택 배경:
• 2001년 미국 표준으로 채택
• DES의 후속 표준
키 길이:
├─ AES-128: 128비트 키
├─ AES-192: 192비트 키
└─ AES-256: 256비트 키
강점:
✓ 빠른 속도
✓ 높은 보안성
✓ 하드웨어 가속 지원
사용처:
• VPN (IPsec, SSL VPN)
• 파일 암호화 (BitLocker, FileVault)
• 무선 LAN (WPA2, WPA3)
• HTTPS (TLS)
RC4:
RC4의 흥망성쇠:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[1987년]
↓
[RC4 개발]
간단하고 빠른 스트림 암호
↓
[1990-2000년대]
↓
[널리 사용]
• WEP (무선 LAN)
• WPA (초기)
• SSL/TLS
↓
[2013-2015년]
↓
[취약점 발견]
• BEAST 공격
• RC4 NOMORE 공격
↓
[현재]
↓
[사용 중단]
• TLS 1.3에서 제거
• WPA3로 대체
교훈:
→ 암호 알고리즘도 수명이 있음
→ 지속적인 보안 업데이트 필요
RSA:
RSA 암호화:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
기반 원리:
• 큰 소수의 곱셈은 쉬움
• 인수분해는 어려움
키 생성:
1. 큰 소수 p, q 선택
2. n = p × q
3. 공개키 (n, e)
4. 개인키 (n, d)
키 크기:
├─ 2048비트: 현재 권장
├─ 3072비트: 고보안
└─ 4096비트: 최고보안
사용처:
• HTTPS (TLS 핸드셰이크)
• SSH 키 인증
• 전자서명
• PGP/GPG 이메일 암호화
한계:
→ 느린 속도
→ 큰 데이터 암호화에 부적합
→ 주로 키 교환에 사용
ECDSA (타원곡선 암호):
ECDSA 장점:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
보안 강도 비교:
┌──────────┬──────────┬──────────┐
│ RSA │ ECC │ 보안 수준 │
├──────────┼──────────┼──────────┤
│ 3072비트 │ 256비트 │ 128비트 │
│ 7680비트 │ 384비트 │ 192비트 │
│ 15360비트│ 521비트 │ 256비트 │
└──────────┴──────────┴──────────┘
→ 짧은 키로 동등한 보안
사용 사례:
• Bitcoin: secp256k1 곡선
• Ethereum: secp256k1 곡선
• TLS 1.3: P-256, P-384 곡선
• 모바일 기기: 효율적 연산
블록체인에서의 활용:
[개인키 (256비트)]
↓
[ECDSA 서명]
↓
[트랜잭션 서명]
↓
[공개키로 검증]
76. 공통키 암호화 방식 / 공개키 암호화 방식
공통키 암호화 방식 (대칭키 암호화)
개념:
공통키 암호화 방식:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[송신자] [수신자]
\ /
\ /
\ /
\ /
[공통 비밀키]
/ \
/ \
↓ ↓
[암호화] [복호화]
↓ ↓
[암호문] ────────→ [평문]
핵심:
→ 암호화와 복호화에 동일한 키 사용
→ 송수신자가 사전에 키 공유 필요
공통키 암호화 과정:
공통키 암호화 통신 흐름:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
사전 준비:
[키 생성]
↓
"SecretKey123"
↓
[안전한 채널로 키 공유]
송신자 ←─────────→ 수신자
↓
통신 단계:
[송신자]
↓
평문: "Hello"
↓
[AES 암호화 + SecretKey123]
↓
암호문: "5d41402a..."
↓
[네트워크 전송]
↓
[수신자]
↓
[AES 복호화 + SecretKey123]
↓
평문: "Hello"
장점과 단점:
공통키 암호화 장단점:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
장점:
✓ 빠른 속도
└─ 대용량 데이터 암호화에 적합
✓ 간단한 알고리즘
✓ 적은 연산량
단점:
✗ 키 배송 문제 (Key Distribution Problem)
└─ 네트워크로 키 전송 시 유출 위험
✗ 키 관리 복잡성
└─ n명 통신 시 n(n-1)/2개 키 필요
└─ 100명 → 4,950개 키
✗ 사전 키 공유 필요
└─ 초기 연결 시 어려움
키 배송 문제:
공통키 암호화의 딜레마:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[송신자] ─────────── [수신자]
│ │
└─→ [공통키 전송] ─→ │
│
↓
[공격자가
중간에서
키 탈취?]
↓
[보안 파괴]
문제:
"암호화하려면 키가 필요한데,
키를 안전하게 전달하려면 암호화가 필요"
해결책:
→ 공개키 암호화 방식
→ Diffie-Hellman 키 교환
→ 대역 외 전달 (Out-of-band)
공개키 암호화 방식 (비대칭키 암호화)
개념:
공개키 암호화 방식:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[송신자] [수신자]
│
[키 쌍 생성]
/ \
[공개키] [개인키]
(Public Key) (Private Key)
│ │
│ │
[네트워크로 공개] [비밀로 보관]
↓ │
│ │
[송신자가 공개키로 암호화] │
↓ │
[암호문] │
│ │
└────→ [수신자가 개인키로 복호화]
↓
[평문 복원]
핵심:
→ 암호화 키 ≠ 복호화 키
→ 공개키로 암호화, 개인키로만 복호화
통신 과정:
공개키 암호화 통신 흐름:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 키 생성 및 배포:
[수신자 Bob]
↓
[RSA 키 쌍 생성]
├─ 공개키 (n, e)
└─ 개인키 (n, d)
↓
[공개키를 웹사이트에 게시]
↓
2. 암호화 및 전송:
[송신자 Alice]
↓
[Bob의 공개키 다운로드]
↓
평문: "비밀 메시지"
↓
[RSA 암호화 + Bob 공개키]
↓
암호문: "8f3e9d2a..."
↓
[네트워크 전송]
↓
3. 복호화:
[수신자 Bob]
↓
[자신의 개인키로 복호화]
↓
평문: "비밀 메시지"
안전성:
→ 공개키가 유출되어도 안전
→ 개인키 없이는 복호화 불가
장점과 단점:
공개키 암호화 장단점:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
장점:
✓ 키 배송 문제 해결
└─ 공개키는 안전하게 공개 가능
✓ 키 관리 단순
└─ n명 통신 시 2n개 키만 필요
└─ 100명 → 200개 키
✓ 사전 키 공유 불필요
└─ 즉시 암호화 통신 가능
✓ 전자서명 가능
단점:
✗ 느린 속도
└─ 공통키 방식의 수백~수천 배 느림
✗ 복잡한 수학 연산
✗ 큰 데이터 암호화 부적합
✗ 공개키 인증 필요
└─ MITM 공격 방지
공통키 vs 공개키 비교:
| 구분 | 공통키 암호화 | 공개키 암호화 |
|---|---|---|
| 키 개수 | 1개 (공통) | 2개 (공개키, 개인키) |
| 암호화 키 | 공통 비밀키 | 수신자 공개키 |
| 복호화 키 | 공통 비밀키 | 수신자 개인키 |
| 속도 | 빠름 | 느림 |
| 키 배송 | 어려움 | 쉬움 |
| 사용 용도 | 대용량 데이터 | 키 교환, 전자서명 |
| 대표 알고리즘 | AES, DES | RSA, ECC |
하이브리드 암호화 시스템
실무에서의 활용:
하이브리드 암호화 (HTTPS 예시):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[클라이언트] [서버]
│
1. 핸드셰이크: │
│ │
├─→ [서버 공개키 요청]
│ │
│←─ [서버 공개키 전송]
│ (RSA 공개키)
│ │
├─→ [공통키 생성 및 암호화]
│ 공통키: AES-256
│ 공개키로 암호화
│ 전송
│ │
│ [개인키로 복호화]
│ 공통키 획득
│ │
2. 데이터 전송:
│ │
├─→ [HTTP 요청]
│ AES-256 암호화
│ │
│←─ [HTTP 응답]
│ AES-256 암호화
│ │
장점 결합:
→ 공개키: 안전한 키 교환
→ 공통키: 빠른 데이터 암호화
과정 상세:
HTTPS 연결 상세 흐름:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1단계: 서버 인증 및 공개키 전달
[클라이언트] → "ClientHello" → [서버]
[클라이언트] ← "ServerHello + 인증서" ← [서버]
(서버 공개키 포함)
2단계: 세션 키 생성 및 교환
[클라이언트]
↓
[난수 생성] → 이것이 세션 키 (AES 키)
↓
[서버 공개키로 암호화]
↓
[암호화된 세션 키 전송] → [서버]
↓
[개인키로 복호화]
↓
[세션 키 획득]
3단계: 세션 키로 통신
[클라이언트] ←─ AES 암호화 ─→ [서버]
(빠른 속도)
세션 종료 시:
세션 키 폐기 → 다음 연결 시 새 키 생성
공개키 암호화 방식을 역으로 사용한 전자 서명
전자 서명 원리:
전자 서명 (Digital Signature):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
일반 공개키 암호화:
[송신자] → 수신자 공개키로 암호화 → [수신자]
수신자 개인키로 복호화
전자 서명 (역방향):
[송신자] → 자신의 개인키로 "서명" → [수신자]
송신자 공개키로 "검증"
목적:
→ 기밀성 (X)
→ 인증성 (O): 송신자 신원 확인
→ 무결성 (O): 데이터 변조 방지
→ 부인 방지 (O): 송신 사실 부정 불가
전자 서명 과정:
전자 서명 생성 및 검증:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[송신자 Alice]
↓
[문서]
"계약서 내용"
↓
[해시 함수]
SHA-256
↓
[문서 해시값]
"3f4d8a2b..."
↓
[Alice 개인키로 암호화]
RSA 개인키
↓
[전자 서명]
"9e2f1c8d..."
↓
[문서 + 서명 전송]
↓
[수신자 Bob]
↓
├─→ [받은 문서]
│ "계약서 내용"
│ ↓
│ [해시 계산]
│ "3f4d8a2b..." ───┐
│ │
└─→ [받은 서명] │
"9e2f1c8d..." │
↓ │
[Alice 공개키로 │
복호화] │
↓ │
[원본 해시값] │
"3f4d8a2b..." ─────┤
│
↓
[비교]
↓
일치 → 검증 성공
불일치 → 변조됨
전자 서명의 보안 원리:
전자 서명의 보안성:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Alice 개인키로 서명]
↓
오직 Alice만 서명 생성 가능
↓
[Alice 공개키로 검증]
↓
누구나 검증 가능
↓
검증 성공 = Alice가 서명했음을 증명
위조 방지:
• 개인키 없이는 유효한 서명 생성 불가
• 문서 변조 시 해시값 변경 → 검증 실패
• 서명 변조 시 공개키로 복호화 실패
활용:
• 전자계약
• 소프트웨어 배포 (코드 서명)
• 이메일 (S/MIME, PGP)
• PDF 서명
• 블록체인 트랜잭션
인증 기관의 역할:
공개키 인증:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
문제 상황:
[Alice] → "이것이 내 공개키야" → [Bob]
↑
[공격자가 가짜 공개키를 끼워넣으면?]
해결: 인증 기관 (CA)
[Alice]
↓
[인증 기관에 신원 확인 및 공개키 등록]
↓
[CA가 Alice 공개키에 전자 서명]
↓
[인증서 발급]
↓
[Alice] → [인증서 전송] → [Bob]
↓
[CA 공개키로
인증서 검증]
↓
[Alice 공개키가
진짜임을 확인]
인증서 내용:
• 소유자 정보 (Alice)
• 공개키
• CA의 전자 서명
• 유효 기간
77. 서버 인증서 / 인증 기관
본인 인증을 위한 서버 인증서
서버 인증서의 필요성:
웹 통신의 두 가지 보안 요구사항:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 통신 암호화
└─ 데이터 도청 방지
2. 상대방 인증
└─ 피싱 사이트 방지
[사용자]
↓
"https://mybank.com에 접속"
↓
의문:
• 정말 mybank.com이 맞나?
• 공격자가 만든 가짜 사이트는 아닐까?
• 입력한 비밀번호가 안전할까?
↓
[서버 인증서로 검증]
↓
확인 사항:
✓ 서버가 mybank.com 맞음
✓ 인증 기관이 신원 확인함
✓ 암호화 통신 가능
서버 인증서 동작 원리:
서버 인증서 검증 과정:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[웹 브라우저] [웹 서버]
│ │
├─→ HTTPS 연결 요청 ────→│
│ │
│ [서버 인증서
│ + 공개키 전송]
│ │
│←─ 서버 인증서 수신 ────│
↓ │
[인증서 검증] │
│ │
├─ 발급자 확인 │
│ (신뢰할 수 있는 CA?) │
│ │
├─ 유효 기간 확인 │
│ (만료되지 않았나?) │
│ │
├─ 도메인 일치 확인 │
│ (요청한 도메인과 일치?) │
│ │
├─ CA 서명 검증 │
│ (위조되지 않았나?) │
│ │
↓ │
[검증 성공] │
│ │
├─→ 암호화 통신 시작 ───→│
│ │
│←─→ 안전한 HTTPS 통신 ←→│
서버 인증서 구성 요소:
서버 인증서 내용:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[인증서 정보]
├─ 버전: v3
├─ 일련번호: 1234567890abcdef
├─ 서명 알고리즘: SHA-256 with RSA
│
├─ 발급자 (Issuer):
│ └─ CN=DigiCert Global Root CA
│ └─ O=DigiCert Inc
│
├─ 유효 기간:
│ ├─ 시작: 2024-01-01
│ └─ 종료: 2025-12-31
│
├─ 주체 (Subject):
│ ├─ CN=mybank.com
│ ├─ O=MyBank Inc.
│ └─ C=KR
│
├─ 공개키 정보:
│ ├─ 알고리즘: RSA
│ ├─ 키 크기: 2048 bits
│ └─ 공개키 값: (RSA Public Key)
│
└─ CA의 전자 서명
└─ (CA 개인키로 서명)
확장 필드:
├─ Subject Alternative Name (SAN):
│ ├─ mybank.com
│ ├─ www.mybank.com
│ └─ *.mybank.com (와일드카드)
│
└─ Key Usage:
└─ Digital Signature, Key Encipherment
서버 인증서를 발행하는 인증 기관
인증 기관 (CA):
인증 기관 (Certificate Authority):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
역할:
├─ 신원 확인
│ └─ 기업 실존 여부 검증
│ └─ 도메인 소유권 확인
│
├─ 인증서 발급
│ └─ 서버 공개키에 CA 서명
│
├─ 인증서 관리
│ └─ 갱신, 폐기 관리
│
└─ 신뢰 체계 유지
└─ 루트 인증서 관리
대표 CA:
• DigiCert
• Let's Encrypt (무료)
• GlobalSign
• Comodo
• GeoTrust
인증서 발급 과정:
기업의 HTTPS 지원 절차:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[기업: MyBank]
↓
1단계: 준비
[키 쌍 생성]
├─ 개인키 (비밀 보관)
└─ 공개키
↓
[CSR 생성]
(Certificate Signing Request)
├─ 기업 정보
├─ 도메인: mybank.com
└─ 공개키
↓
2단계: 인증 기관 신청
[CA에 CSR 제출]
↓
[신원 확인 과정]
├─ 등기부등본 확인
├─ 대면/전화 확인
├─ 도메인 소유권 확인
│ └─ DNS 레코드 추가
│ └─ 특정 파일 호스팅
└─ 사업자 등록증 확인
↓
3단계: 인증서 발급
[CA가 확인 완료]
↓
[CA 개인키로 서명]
↓
[서버 인증서 발급]
├─ 공개키
├─ 기업 정보
└─ CA 서명
↓
4단계: 서버 설치
[웹 서버에 인증서 + 개인키 설치]
├─ 인증서: /etc/ssl/certs/mybank.crt
└─ 개인키: /etc/ssl/private/mybank.key
↓
[HTTPS 서비스 시작]
인증서 검증 레벨:
인증서 검증 레벨:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[DV - Domain Validation]
├─ 검증: 도메인 소유권만
├─ 발급 시간: 수분~수시간
├─ 가격: 무료~저렴
├─ 용도: 개인 블로그, 소규모 사이트
└─ 예: Let's Encrypt
↓
[OV - Organization Validation]
├─ 검증: 도메인 + 기업 실존
├─ 발급 시간: 1~3일
├─ 가격: 중간
├─ 용도: 기업 웹사이트
└─ 인증서에 기업 정보 표시
↓
[EV - Extended Validation]
├─ 검증: 도메인 + 엄격한 기업 검증
├─ 발급 시간: 1~2주
├─ 가격: 비쌈
├─ 용도: 금융, 전자상거래
└─ 주소창에 기업명 표시 (과거)
현재 추세:
→ DV 인증서 대중화 (Let's Encrypt)
→ EV 인증서의 UI 혜택 감소
→ HTTPS는 필수, 인증 레벨은 선택
HTTPS 통신의 기능인 암호화 통신과 웹 사이트의 실체 인증
HTTPS의 두 가지 핵심 기능:
HTTPS 통신의 이중 목적:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[HTTPS 통신]
│
├─→ 1. 암호화 통신
│ └─ 데이터 도청 방지
│ └─ 중간자 공격 방지
│ └─ 데이터 무결성 보장
│
└─→ 2. 웹 사이트 실체 인증
└─ 서버 신원 확인
└─ 피싱 사이트 방지
└─ 신뢰성 확보
과거 vs 현재:
HTTPS 사용의 변화:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[과거 - 선택적 사용]
│
├─ 일반 페이지: HTTP
│ └─ 암호화 불필요
│
└─ 민감 페이지: HTTPS
└─ 로그인 페이지
└─ 결제 페이지
└─ 개인정보 입력
문제점:
• HTTP 페이지에서 쿠키 도청
• 혼합 콘텐츠 (Mixed Content) 취약점
• 사용자 혼란
────────────────────────────
[현재 - 전체 적용]
│
└─ 모든 페이지: HTTPS
└─ 전체 사이트 암호화
이유:
✓ Let's Encrypt로 무료 인증서
✓ 성능 영향 최소화 (HTTP/2, TLS 1.3)
✓ SEO 이점 (Google 순위 요소)
✓ 브라우저 경고 (HTTP는 "안전하지 않음")
✓ 법적 요구사항 (GDPR 등)
브라우저의 HTTPS 표시:
브라우저 주소창 표시:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HTTPS (유효한 인증서):
┌────────────────────────────┐
│ 🔒 https://mybank.com │
└────────────────────────────┘
"안전함" 또는 자물쇠 아이콘
HTTPS (문제 있는 인증서):
┌────────────────────────────┐
│ ⚠️ https://suspicious.com │
└────────────────────────────┘
"주의 필요" 경고
HTTP (암호화 없음):
┌────────────────────────────┐
│ ⓘ http://oldsite.com │
└────────────────────────────┘
"안전하지 않음" 경고
인증서 정보 확인:
자물쇠 아이콘 클릭
↓
인증서 보기
↓
• 발급 대상
• 발급자 (CA)
• 유효 기간
• 공개키 정보
무료 인증서의 등장:
Let's Encrypt의 영향:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[2016년 이전]
│
└─ HTTPS는 비용 부담
├─ 연간 수만~수십만 원
└─ 중소 사이트 부담
[2016년 Let's Encrypt 등장]
│
└─ 무료 DV 인증서
├─ 자동 발급
├─ 자동 갱신 (90일마다)
└─ 오픈소스 도구 (Certbot)
결과:
• HTTPS 사용률 급증
• 2016년: ~40%
• 2025년: ~95% (주요 사이트)
현대 HTTPS의 의미 변화:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
과거: "이 사이트는 신뢰할 수 있다"
↓
현재: "이 사이트는 기본 보안을 갖췄다"
암호화 통신 = 필수 (표준)
실체 인증 = 선택 (OV, EV)
사용자 주의사항:
→ HTTPS라고 무조건 안전한 것은 아님
→ 피싱 사이트도 HTTPS 사용 가능
→ 도메인 이름 확인 필수
→ 주소창 전체 URL 확인
인증서 폐기:
인증서 폐기 (Certificate Revocation):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
폐기 사유:
├─ 개인키 유출
├─ 기업 정보 변경
├─ 도메인 소유권 상실
└─ 보안 침해
폐기 확인 방법:
1. CRL (Certificate Revocation List)
[브라우저]
↓
[CA에서 폐기 목록 다운로드]
↓
[인증서가 목록에 있는지 확인]
단점: 목록이 커짐, 느림
2. OCSP (Online Certificate Status Protocol)
[브라우저]
↓
[CA에 실시간 조회]
"이 인증서 유효한가요?"
↓
[CA 응답]
"유효함" / "폐기됨" / "알 수 없음"
단점: 개인정보 노출, CA 부하
3. OCSP Stapling
[웹 서버가 주기적으로 OCSP 응답 받음]
↓
[클라이언트에게 함께 전송]
↓
[클라이언트는 CA 조회 불필요]
장점: 빠름, 개인정보 보호
핵심 요약:
서버 인증서와 인증 기관 요약:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[인증서]
├─ 서버의 신원을 증명하는 디지털 문서
├─ 공개키 포함
└─ CA의 전자 서명
[인증 기관]
├─ 신원 확인 및 인증서 발급
├─ 신뢰의 근간
└─ 브라우저에 루트 인증서 사전 설치
[HTTPS 통신]
├─ 암호화: 데이터 보호
└─ 인증: 신원 확인
[현대적 접근]
├─ 모든 웹사이트 HTTPS 필수
├─ Let's Encrypt로 무료화
└─ 암호화 기능이 주, 인증은 부가
보안 의식:
→ HTTPS ≠ 절대 안전
→ 도메인 이름 항상 확인
→ 의심스러운 인증서 경고 무시 금지